<?php
/**
 * Abstract service to manage Boxes on the homepage 
 */
interface Model_BoxService {
	/**
     * Search for boxes matching search criteria based on published status and
     * contents of name and url fields of feed and box
     * If no criteria are specified it will return the entire list of Boxes
     * in the system
     * 
     * @param array $criteria an optional associative array 
     * @return Zend_Paginator_Adapter_Interface
	 */
    public function searchBoxes($criteria = null);
    
    /**
     * Add a new box
     * 
     * @param Model_Entity_Homepagebox $box
     * @return void
     */
    public function addBox($box);
    
    /**
     * Delete an existing box
     * 
     * @param int $boxID
     * @return void
     */
    public function deleteBox($boxID);
    
    /**
     * Get information of box wich id is $boxID
     * 
     * @param int $boxID
     * @return Model_Entity_Homepagebox
     */
    public function getBox($boxID);
    
    /**
     * Update information of box wich id is $boxID
     * 
     * @param Model_Entity_Box $box
     * @return voidModel_Entity_Homepagebox
     */
    public function editBox($box);
    
    /**
     * Published/Not Published box
     * 
     * @param Model_Entity_Homepagebox $box
     * @return void
     */
    public function setPublished($box);
}

